;主引导程序
;-----------------------------------------------------
SECTION MBR vstart=0x7c00			;告诉编译器，起始地址是0x7c00
	mov ax,cs				;因为BIOS执行完毕后cs:ip为0x0:0x7c00,所以用cs初始化各寄存器(此时cs=0)
	mov ds,ax				;ds、es、ss、fs不能给立即数初始化，需要用ax寄存器初始化
	mov es,ax
	mov ss,ax
	mov fs,ax
	mov sp,0x7c00				;初始化堆栈指针，因为目前0x7c00以下的内存暂时可用
	mov ax,0xb800				;选择显卡的文本模式
	mov gs,ax				;使用GS段寄存器作为显存段基址

;清屏利用0x06号功能，上卷全部行，则可清屏
;-----------------------------------------------------
;INT 0x10	功能号:0x06		功能描述:上卷窗口
;-----------------------------------------------------
;输入:
;AH	功能号= 0x06
;AL = 上卷行数（如果为0，表示全部）
;BH = 上卷行属性
;(CL,CH) = 窗口左上角的（X,Y）位置
;(DL,DH) = 窗口右下角的（X,Y）位置
;无返回值:

	mov ax,0x600			;上卷行数:全部	功能号:06
	mov bx,0x700			;上卷属性
	mov cx,0			;左上角:(0，0)
	mov dx,0x184f			;右下角:(80,25)
					;VGA文本模式中，一行只能容纳80字节，共25行
					;下标从0开始，所以0x18=24，0x4f=79
	int 0x10			;int 0x10

;输出背景色为蓝色，前景色为红色，并且跳动的字符串“1 MBR”
;--------------------------------------------------------------------------
mov byte [gs:0x00], '1'
mov byte [gs:0x01], 0x92

mov byte [gs:0x02], ' '
mov byte [gs:0x03], 0x12

mov byte [gs:0x04], 'M'
mov byte [gs:0x05], 0x12

mov byte [gs:0x06], 'B'
mov byte [gs:0x07], 0x12

mov byte [gs:0x08], 'R'
mov byte [gs:0x09], 0x12
;--------------------------------------------------------------------------

	jmp $					;使用程序悬停在此
	
	message db "hello world"
	times 510-($-$$) db 0
	db 0x55,0xaa
